<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  
</body>
</html>

<script>
// 英文：
  // parse - 解析；     JS含义：一般为将 字符串，解析为 其他数据类型
  // int - 整数
  // float - 小数

// 三种基础数据类型 - 相互转换
var num = 123,
  str = `123.123`,
  bol = true,
  unf = undefined,
  nul = null;


/* 解释：NaN - Not a Number
  1. typeof NaN  ->  'number'
  2. NaN 不等于 任何数据，包括其本身
     原因：Number('sdfds') ->  NaN
          Number('sxxxds')  ->  NaN
*/


/* 方法一：其他变量类型转数字 - Number(变量)

  console.log(Number('123')); // 123 ；将字符串'123'转成数字 123
  console.log(Number('sdfds')); // NaN； 若字符串不能转成数字，即被转成 NaN -> Not a Number

  console.log(Number(true)); // 1 ； 将 布尔值true，转成数字 1
  console.log(Number(false)); //0 ； 将 布尔值false，转成数字 0

  console.log(Number(undefined)); // NaN； 
  console.log(Number(null)); // 0
*/

// 方法二 - parseInt：
/* parseInt - “想方设法将其他类型是数据，转成 整数数字”
  执行逻辑：从左往右解析，直接不能解析为止 

  console.log(parseInt('123.123')); // 123
  console.log(parseInt('123'));     // 123
  console.log(parseInt('123asd'));  // 123
  console.log(parseInt('afdadsf123asd')); // NaN

  console.log(parseInt(true)); // NaN
  console.log(parseInt(false)); // NaN
  console.log(parseInt(undefined)); // NaN 
  console.log(parseInt(null));     // NaN
*/

/* 方法三 - parseFloat：
  注：运行逻辑 与 parseInt 几乎一致，除了 将小数可转成小数

  console.log(parseFloat('123.123')); // 123.123
  console.log(parseFloat('123'));     // 123
  console.log(parseFloat('123asd'));  // 123
  console.log(parseFloat('afdadsf123asd')); // NaN
  
  console.log(parseFloat(true)); // NaN
  console.log(parseFloat(false)); // NaN
  console.log(parseFloat(undefined)); // NaN 
  console.log(parseFloat(null));     // NaN
*/

</script>